import createElement from './creatElement.js'
import updateChildren from './updateChildren.js'
export default function patchVnode(oldVnode, newVnode) {
  // oldVnode和newVnode 是同一个节点，进行精细化比较
  if (oldVnode === newVnode) return
  if (newVnode.text !== undefined && (newVnode.children === undefined || newVnode.children.length === 0)) {
    if (newVnode.text !== oldVnode.text) { // 如果新Vnode有text但是没有children，并且和旧的Vnode的text不同，直接替换
      oldVnode.elm.innerText = newVnode.text
    }
  } else {
    // 新Vnode没有text有children,老结点也有children，最复杂的情况
    if (oldVnode.children != undefined && oldVnode.children.length > 0) {
      updateChildren(oldVnode.elm, oldVnode.children, newVnode.children)
    } else {
      //  新Vnode没有text有children,但是老结点没有children
      // 清空老vnode的内容
      oldVnode.elm.innerText = ''
      for (let i = 0; i < newVnode.children.length; i++) {
        const dom = createElement(newVnode.children[i])
        oldVnode.elm.appendChild(dom)
      }
    }
  }
}